#include "execute_task.h"
TaskHandle_t executeHandler;

void showContrl();
void alarmContrl();
void airContrl();
void curtainContrl();


//采集的数据已经处理好
extern TarGatherData targetData;
THData thData;
//执行模块初始化
void init_execute(){
//1.后面还有配置模块，当前配置模块已经把数据加载好了
//2.阈值数据和功能开关 都自己给一些默认值
if (thData.state==0)
{
    //需要加载阈值数据--读eeprom,现在先模拟
    thData.state=15;//0000 1111
        thData.tempMax = 200;
        thData.tempMin= -20;
        thData.humiMax= 200;
        thData.humiMin= 20;
        thData.sunshine = 100;
        thData.smoke = 200;
}
//对可能要使用的外设做初始化
ledInit();
BEEP_Init();
OLED_Init();

}

//执行模块的任务
void execute_task(void *param){

while (1)
{
//判断用户要做哪些控制
if (thData.state&0x01){
    //0001  显示
    showContrl();
}
if (thData.state&0x02){
    //0010  告警
    alarmContrl();
}
if (thData.state&0x04){
    //0100  空调
    airContrl();
}
if (thData.state&0x08){
    //1000  窗帘
    curtainContrl();
}
    vTaskDelay(500);
}


}

//用来创建一个任务，心跳任务
/*
1.心跳 -让用户去感知设备在工作
2.没过几秒中给后台报备自己的状态 --网络，http，tcp udp



*/
void createexecuteTask(){
xTaskCreate(execute_task,"execute_task",128,NULL,2,&executeHandler);
}
void showContrl()
{//在oled上显示
	    OLED_ShowString(0,0, "Temp:  C",12);
	OLED_ShowString(0,15, "Humi:  %",12);
    OLED_ShowNum(5*6,0,targetData.temp,2,12);
	OLED_ShowNum(5*6,15,targetData.humi,2,12);
	OLED_Refresh_Gram();
	
}
void alarmContrl(){
u8 beepflag=0;
if (targetData.temp<thData.tempMin||targetData.temp>thData.tempMax)
{
    /* 点亮第一个LEd灯 */
    LED1=0;
    beepflag=1;
}else{
    LED1=1;
}

if (targetData.temp<thData.tempMin||targetData.temp>thData.tempMax)
{
    /* 点亮第一个LEd灯 */
    LED2=0;
    beepflag=1;
}else{
    LED2=1;
}

if (targetData.smoke>thData.smoke)
{
    /* 点亮第一个LEd灯 */
    LED3=0;
    beepflag=1;
}else{
    LED3=1;
}

if (targetData.sunshine>thData.sunshine)
{
    /* 点亮第一个LEd灯 */
    LED4=0;
    beepflag=1;
}else{
    LED4=1;
}

//雨水
if (!targetData.raidrop)
{
     LED5=0;
    beepflag=1;
}else
{
    LED5=1;
}

if(!beepflag)
{
    BEEP=1;//不响
}else{
    BEEP=!BEEP;//响
    delay_us(20);
}
}
//空调 控制 发送红外信息
void airContrl(){

}
void curtainContrl(){

}
